package subraSoft.fenix.model.authentication.domain;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Version;

import subraSoft.centaurus.model.domain.CenDefaultDO;

/**
 * Objeto de Seguridad.
 * 
 * Representan una credencial de acceso a cierto recurso de la aplicacion. 
 * 
 * @author christian
 */
@Entity
@Table(name="FEN_OBJETO_SEGURIDAD")
public class FenObjSecDO extends CenDefaultDO implements Serializable
{
	private static final long serialVersionUID = 1L;
	private String id;
	private String descripcion;
	private List<FenPerfilDO> perfiles;
	private Integer version;
	
	@Id
	@Column(name="OBJ_SEG_ID")
	public String getId() {
		return id;
	}
	
	public void setId(String id) {
		this.id = id;
	}
	
	@Column(name="OBJ_SEG_DESCRIPCION")
	public String getDescripcion() {
		return descripcion;
	}
	
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	@ManyToMany(
	        cascade = {CascadeType.PERSIST, CascadeType.MERGE},
	        mappedBy = "objetosSeg",
	        targetEntity = FenPerfilDO.class
	    )
	public List<FenPerfilDO> getPerfiles() {
		return perfiles;
	}
	
	public void setPerfiles(List<FenPerfilDO> perfiles) {
		this.perfiles = perfiles;
	}

	public void setVersion(Integer version) {
		this.version = version;
	}

	@Version
	@Column(name="OBJ_SEG_VERSION")
	public Integer getVersion() {
		return version;
	}
}
